using Newtonsoft.Json;

namespace RevitCopilot.MCPServer.Models;

public class JsonRpcResponse
{
    // JSON-RPC 版本，固定为 "2.0"
    [JsonProperty("jsonrpc")]
    public string JsonRpc { get; set; } = "2.0";
    // 请求ID，用于匹配请求和响应
    [JsonProperty("id")]
    public object Id { get; set; } = string.Empty;
    // 成功响应的结果对象
    [JsonProperty("result", NullValueHandling = NullValueHandling.Ignore)]
    public object? Result { get; set; }
    // 错误响应信息
    [JsonProperty("error", NullValueHandling = NullValueHandling.Ignore)]
    private JsonRPCError? Error { get; set; }
    // 创建错误响应的方法
    public void SetError(int code, string message, object? data = null)
    {
        Error = new JsonRPCError
        {
            Code = code,
            Message = message,
            Data = data
        };
    }
    // 将 JsonRPCError 作为嵌套私有类
    private class JsonRPCError 
    { 
        // 错误代码 
        [JsonProperty("code")] 
        public int Code { get; set; } 
        // 错误消息 
        [JsonProperty("message")] 
        public string Message { get; set; } = string.Empty; 
        // 错误的附加数据 
        [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)] 
        public object? Data { get; set; } 
    }
}